package com.berchen.busidb.service;

import com.berchen.busidb.dao.BusidbMapper;
import com.berchen.common.busidb.model.*;
import com.berchen.common.busidb.service.BusidbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional(transactionManager = "busiTx",propagation = Propagation.REQUIRED)
@Service
public class BusidbServiceImpl implements BusidbService {

    @Autowired
    private BusidbMapper mapper;

    @Override
    public void test() {
        System.out.println("springboot is test");
    }

    @Override
    public void batchAddBill(List<BillVo> bills) {
        mapper.batchAddBill(bills);
    }

    @Override
    public List<BillVo> getBills(BillVo vo) {
        return mapper.getBills(vo);
    }

    @Override
    public void updateBalance() {

        // 查询出 账户对应的余额
        List<BillVo> billVos=mapper.getBalance();
        // 更新用户表用户的余额
        mapper.updateBalance(billVos);
    }
//
//    @Override
//    public void createMonthBIll(MonthBillVo monthBillVo) {
//
//        // TODO 这里应该是从缓存中获取的
//        monthBillVo.setUid(1L);
//        // 查询该月份的是否已经存在
//        MonthBillVo resultVo=mapper.getMonthBill(monthBillVo);
//        // 查询月份的支出和收入
//        monthBillVo.setType(0); // 支出
//        Double outPrice=mapper.getPrice(monthBillVo);
//        monthBillVo.setType(1); // 收入
//        Double inPrice=mapper.getPrice(monthBillVo);
//        monthBillVo.setOutPrice(outPrice==null?0:Math.abs(outPrice));
//        monthBillVo.setInPrice(inPrice==null?0:inPrice);
//        if(resultVo!=null){
//            // 判断月账单和数据库总的查询出来的是否一致 不一致 的话就进行修改
//            if(!resultVo.getOutPrice().equals(monthBillVo.getOutPrice())||!resultVo.getInPrice().equals(monthBillVo.getInPrice())){
//                mapper.updateMonthBill(monthBillVo);
//            }
//            return;
//        }
//
//        // 只有该月账单不存在才进行插入
//        // 插入月数据
//        monthBillVo.setCreateDate(monthBillVo.getSDate());
//        mapper.insertMonthBill(monthBillVo);
//    }
    @Override
    public void addBill(BillVo bill){

        mapper.addBill(bill);
    }

    @Override
    public List<BillVo> getBillsByCondition(BillQueryModel vo) {
        return mapper.getBillsByCondition(vo);
    }

    @Override
    public void delBill(Long id, Long uid) {
        mapper.delBill(id,uid);
    }

    @Override
    public Double getPrice(BillQueryModel vo) {
        return mapper.getPrice(vo);
    }
}
